feat(feature-flow): questions deck, note tags, contract step, contract-check, acceptance deck, close-out Contract section - #10
Closed
itsdestin wants to merge 26 commits into
Closed
Conversation
…on plan Review against origin/master bc2e656 found one defect the design rests on — every *.answers.json is gitignored (.gitignore:97-98), so the contract's sources had no history — plus stale positioning (taxonomy draft archived, /wrap-up and ui-probe landed, restructure design supersedes) and a fourth appearance (the reopen deck) the count missed. Decided: the contract IS the acceptance deck's spec (one format); questions deck = words-only decide steps; note tags; the plan tier and reopen default are stated as assumptions for Destin to veto (§9). The plan: 8 tasks, all inside scripts/ui-review + close-out.sh + docs; new tests picture-free so CI runs them. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CiVWE2jGoEVCkp9bYYtuE2
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CiVWE2jGoEVCkp9bYYtuE2
… guards on the branch, one verdicts name, contract as a words step Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F35AsThZGxRFAARcyurigf
…isions, not runtime output Every *.answers.json was gitignored since deck v2 (d81214a). The contract in docs/active/specs/2026-09-01-feature-flow-design.md resolves its rows to these files, so they need history and a clean-checkout life. scratch/ was already ignored on its own line, so throwaway decks need no pattern. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F35AsThZGxRFAARcyurigf
…ption is enough Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F35AsThZGxRFAARcyurigf
…he "ask wording in chat" sentence the words step replaces Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F35AsThZGxRFAARcyurigf
…— so nothing about it is inferred Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F35AsThZGxRFAARcyurigf
…e offers the buttons, selects none Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F35AsThZGxRFAARcyurigf
… as one step Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F35AsThZGxRFAARcyurigf
…uilds the graded deck Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F35AsThZGxRFAARcyurigf
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F35AsThZGxRFAARcyurigf
…pt file reads as its real cause, not a traceback Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F35AsThZGxRFAARcyurigf
… acceptance deck submitted Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F35AsThZGxRFAARcyurigf
…hree decks Dry run (fresh agent, inputs = the three arcade specs + answers + the template; output kept in scratch/, not committed). Rows it wrote: R1 deck Connect 4 board fills the pane width, chat below step1-sizing#S-1 R2 deck chess pieces solid (you) vs hollow (opponent) step1-sizing#S-2 (note verbatim) R3 human board square contrast never below 2.0, any theme board-contrast#B-1 R4 live-app friend row shows a win/loss record per game head-to-head#H-1 (note: "pill, 4W - 2L") R5 live-app post-match card shows the head-to-head line head-to-head#H-2 Not covered: no questions deck existed; R3 has no known contrast guard (told not to read code, so left human). Roadmap: none — every note was untagged. contract-check output: ok: contract holds: 5 rows, every source answered and submitted, every guard found todo: not signed — games-arcade.contract.json has no answers file; serve games-arcade.contract.json and answer it todo: acceptance deck not built — write games-arcade.contract.verdicts.json, then review-cards.py acceptance games-arcade.contract.json Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F35AsThZGxRFAARcyurigf
… steps, MAP and README pointers Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F35AsThZGxRFAARcyurigf
…e audit's matcher needs a slash before **/ Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F35AsThZGxRFAARcyurigf
…ons deck Served in the background (--no-open) for Destin to answer; the build proceeds on the design's assumptions and a veto is the first reopen (design §6). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F35AsThZGxRFAARcyurigf
…cklist guard Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F35AsThZGxRFAARcyurigf
…nt prompt, statement length cap, validate before contract-check, honest counts and names Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F35AsThZGxRFAARcyurigf
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F35AsThZGxRFAARcyurigf
…cked, Q-2/3/4 'other' with questions Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F35AsThZGxRFAARcyurigf
…self-recording review, task breakdown, subagent build
The design's middle was one line ("draft a plan, reviewers attack it") contradicted by
an assumption that said "skip the plan". Destin asked how the backend gets designed, how
work is divided, and who checks what the builders are told. §8 now spells out 8a–8d and
narrows Q-3 to the one question it is (descriptions vs pre-written code per task). The
review loop records each round's findings with accept/reject/reverses marks, stops on a
quiet round, caps at three, and is measured after three features — there is no data
today on whether rounds improve or churn. Rule, skill step 3, deck Q-3 and ROADMAP follow.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01F35AsThZGxRFAARcyurigf
…recommended Q-1 acceptance deck kept; Q-2 reopen proceeds on a marked default; Q-3 tasks carry descriptions by default (reworded after the build-stage discussion); Q-4 answers files committed. The first pass is kept as the 202609020452 rotation. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F35AsThZGxRFAARcyurigf
…estions on a YouCoded feature The feature flow's entry point was one pointer sentence; superpowers:brainstorming fires first on "let's build X" and asks in chat, which the flow says is not a source. Say so where the first session reads it. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F35AsThZGxRFAARcyurigf
itsdestin
added a commit
that referenced
this pull request
Sep 2, 2026
feat(feature-flow): questions deck, note tags, contract step, contract-check, acceptance deck, close-out Contract section Reviewed and merged after resolving three conflicts against master's roadmap restructure and archive gardening: - ROADMAP.md: master split it into docs/roadmap/<area>.md, so the branch's three flat entries were re-filed into dev-workspace.md (rigs / knowledge / tests) in the new grammar; `node scripts/roadmap-check.mjs --fix` rewrote the index counts and reports Structure — clean. - .claude/skills/ui-mockup/SKILL.md: kept the branch's build-stage steps 3–5 and folded master's new roadmap filing path into step 4. - docs/active/plans/2026-09-01-feature-flow-redesign.md: the branch supersedes it with the clean design + plan, so the deletion stands over master's link fix. - Two links in the design doc repointed to docs/archive/ after master's gardening (perf-lab plan, roadmap-restructure design). Verified on the merge result: 132 deck tests OK (all ten Python suites; the five CI ones pass alone), 4 deck-render browser tests OK, close-out-contract.test.sh ok, check-doc-commands.mjs 1 run / 0 failed, audit-anchors.mjs MECHANICAL PASS (anchors 370/370, MAP paths 345/345). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019j28PyvP4Snt1Ls47u7MFC
Owner
Author
|
Merged to master as 9d81045 (merge commit) + a01b651 (the trailing CLAUDE.md commit, cherry-picked because it landed after the merge was built). Closing manually — the cherry-pick means the branch tip is not an ancestor of master, so GitHub won't auto-close it, but every change is on master. Conflicts resolved against master's roadmap restructure and archive gardening:
Verified on the merge result: 132 deck tests OK (all ten Python suites), 4 deck-render browser tests OK, |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implements docs/active/plans/2026-09-01-feature-flow-plan.md (design: docs/active/specs/2026-09-01-feature-flow-design.md). The plan was reviewed against the code first; its "Review changes" section lists what moved.
What the review deck can do now
"words": true): a question with 1–3 written options, or a statement to approve, no picture — the questions deck asked before anything is drawn.note_kind; shown only when stored.rows): the definition of done, signed off as one step.review-cards.py contract-checkreads the gate's three facts (holds / signed / accepted);acceptancebuilds the graded deck from<feature>.contract.verdicts.json. Guards may live on the contract's branch.close-out.shgets a Contract section that relays those facts.docs/are committed (27 files);scratch/was already ignored.scripts/ui-review/contract-agent.md), dry-run against the arcade's three decks: 5 rows, check holds (output in the commit message)..claude/rules/feature-flow.md, skill/README/MAP/CLAUDE pointers, ROADMAP entries.docs/active/design/2026-09-01-feature-flow/feature-flow.questions.json).Verification on the head commit: 132 deck tests OK (5 suites run in CI, picture-free), 4 browser render tests OK, close-out-contract test OK,
check-doc-commands.mjsOK,audit-anchors.mjsMECHANICAL PASS: OK. Each task was reviewed by a separate agent; a whole-branch review's three Important findings are fixed in bab1fdd. Deferred coverage debt is a ROADMAP line.🤖 Generated with Claude Code
https://claude.ai/code/session_01F35AsThZGxRFAARcyurigf